package com.itc.dispatch.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.itc.common.core.validate.Add;
import com.itc.common.core.validate.Delete;
import com.itc.common.core.validate.Update;
import com.itc.dispatch.domain.dto.LimitRecordFieldDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 航班运行监控限制录入信息表
 * @TableName flight_record_limit
 */
@Data
@TableName(value ="flight_record_limit")
public class FlightRecordLimit implements Serializable {

    /**
     * 数据id
     */
    @ApiModelProperty(value = "数据id")
    @NotNull(message = "数据id不能为空",groups = {Update.class})
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 生效开始时间YYYY-MM-DD HH:MM
     */
    @NotBlank(message = "数据id不能为空",groups = {Add.class})
    @ApiModelProperty(value = "生效开始时间YYYY-MM-DD HH:MM")
    private String startTime;

    /**
     * 生效结束时间YYYY-MM-DD HH:MM
     */
    @NotBlank(message = "数据id不能为空",groups = {Add.class})
    @ApiModelProperty(value = "生效结束时间YYYY-MM-DD HH:MM")
    private String endTime;

    /**
     * 条件数据对象
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "条件数据对象")
    @NotNull(message = "条件数据对象不能为空",groups = {Add.class})
    private List<LimitRecordFieldDto> dataJsonFormat;

    /**
     * 数据项类型（1：且，2：或）
     */
    @NotBlank(message = "数据项类型不能为空",groups = {Add.class})
    @ApiModelProperty(value = "数据项类型（1：且，2：或）")
    private String dataJsonType;

    /**
     * 条件数据对象
     */
    @ApiModelProperty(value = "条件数据对象")
    private String dataJson;

    /**
     * 条件数据对象
     */
    @ApiModelProperty(value = "条件数据对象")
    private String controlContent;

    /**
     * 放行间隔(分钟/架次)
     */
    @NotNull(message = "放行间隔不能为空",groups = {Add.class})
    @ApiModelProperty(value = "放行间隔(分钟/架次)")
    private BigDecimal releaseInterval;

    /**
     * 控制航班列表，逗号分隔的航班ID
     */
    @ApiModelProperty(value = "控制航班列表，逗号分隔的航班ID")
    private String controlFlightList;

    /**
     * 是否生效（0：否，1：是）
     */
    @ApiModelProperty(value = "是否生效（0：否，1：是）")
    @NotBlank(message = "是否生效不能为空",groups = {Add.class})
    private String isEnable;

    /**
     * 记录时间
     */
    @ApiModelProperty(value = "记录时间")
    private String recordTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private String updateTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}